package com.lingnan.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.time.LocalDate;
import java.util.Map;

@FeignClient(name = "user-statistics-service", path = "/statistics/users")
public interface UserFeignClient {

    // 1. 用户总量统计
    @GetMapping("/counts")
    Map<String, Long> getUserCounts();

    // 2. 用户增长统计（默认7天）
    @GetMapping("/growth")
    Map<String, Long> getUserGrowth(
            @RequestParam(defaultValue = "7") int days
    );

    // 3. 按月统计用户数量 (添加年份参数)
    @GetMapping("/monthly")
    Map<String, Long> getMonthlyCounts(
            @RequestParam(required = false) Integer year, // 新增年份参数
            @RequestParam int month
    );

    // 4. 自定义日期范围统计
    @GetMapping("/custom-range")
    Map<String, Long> getByDateRange(
            @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate start,
            @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate end
    );

    // 5. 用户增长百分比（默认7天）
    @GetMapping("/growth-percentage")
    Map<String, Double> getUserGrowthPercentage( // 修改为Double类型
                                                 @RequestParam(defaultValue = "7") int days
    );
}